package com.sinogrand.elevator.utils

import com.sinogrand.elevator.data.models.PageInfo

/**
 * 项目列表使用示例
 * 这个文件仅用于演示如何使用项目列表接口和分页功能，实际项目中可以删除
 */
object ProjectListExample {
    
    /**
     * 使用示例
     */
    fun example() {
        // 示例1: 创建分页信息
        val pageInfo = PageInfo(
            page = 1,
            size = 20,
            total = 8
        )
        
        // 示例2: 判断是否有下一页
        val hasNext = PaginationUtils.hasNextPage(pageInfo)
        println("是否有下一页: $hasNext") // 输出: 是否有下一页: false
        
        // 示例3: 获取总页数
        val totalPages = PaginationUtils.getTotalPages(pageInfo)
        println("总页数: $totalPages") // 输出: 总页数: 1
        
        // 示例4: 判断是否是第一页
        val isFirst = PaginationUtils.isFirstPage(pageInfo)
        println("是否是第一页: $isFirst") // 输出: 是否是第一页: true
        
        // 示例5: 判断是否是最后一页
        val isLast = PaginationUtils.isLastPage(pageInfo)
        println("是否是最后一页: $isLast") // 输出: 是否是最后一页: true
        
        // 示例6: 获取下一页页码
        val nextPage = PaginationUtils.getNextPage(pageInfo)
        println("下一页页码: $nextPage") // 输出: 下一页页码: 1
        
        // 示例7: 获取已加载的数据条数
        val loadedCount = PaginationUtils.getLoadedItemCount(pageInfo)
        println("已加载数据条数: $loadedCount") // 输出: 已加载数据条数: 8
        
        // 示例8: 获取当前页数据条数
        val currentPageCount = PaginationUtils.getCurrentPageItemCount(pageInfo)
        println("当前页数据条数: $currentPageCount") // 输出: 当前页数据条数: 8
        
        // 示例9: 有下一页的情况
        val pageInfoWithNext = PageInfo(
            page = 1,
            size = 5,
            total = 15
        )
        
        val hasNext2 = PaginationUtils.hasNextPage(pageInfoWithNext)
        println("是否有下一页: $hasNext2") // 输出: 是否有下一页: true
        
        val nextPage2 = PaginationUtils.getNextPage(pageInfoWithNext)
        println("下一页页码: $nextPage2") // 输出: 下一页页码: 2
        
        val totalPages2 = PaginationUtils.getTotalPages(pageInfoWithNext)
        println("总页数: $totalPages2") // 输出: 总页数: 3
    }
    
    /**
     * 项目状态转换示例
     */
    fun projectStatusExample() {
        // 示例: 将 API 返回的状态转换为 UI 状态
        val apiStatus = 1 // 合同审批中
        val uiStatus = when (apiStatus) {
            Constants.ProjectStatus.CONTRACT_PENDING -> "待审批"
            Constants.ProjectStatus.DISABLED -> "已禁用"
            Constants.ProjectStatus.PROCESSING -> "进行中"
            Constants.ProjectStatus.ARCHIVE_PENDING -> "已审批"
            Constants.ProjectStatus.ARCHIVED -> "已完成"
            else -> "待审批"
        }
        println("API状态: $apiStatus -> UI状态: $uiStatus")
    }
    
    /**
     * 项目类型示例
     */
    fun projectTypeExample() {
        // 示例: 项目类型
        val installType = Constants.ProjectType.INSTALL
        val maintenanceType = Constants.ProjectType.MAINTENANCE
        
        println("安装项目类型: $installType -> ${Constants.ProjectType.getTypeDescription(installType)}")
        println("维保项目类型: $maintenanceType -> ${Constants.ProjectType.getTypeDescription(maintenanceType)}")
    }
}
